The limitations of mobile device hardware can significantly restrict what mobile applications can do. Despite the arrival of multi-core processors and GPUs on smartphones, tablets, and other user equipment, the growing sophistication of mobile applications routinely pushes against the processor and battery limits of modern mobile devices. Some special-purpose systems, such as web services like Siri and Google Now, have started to mitigate these constraints by offloading some computations to the cloud. However, these web services generally preclude shifting arbitrary workloads to the cloud. At present, there is currently no principled way for application developers to have a unified application codebase that can run on both the device and the cloud. Just as in Siri, application developers may be required to statically partition their application into device-specific and cloud-specific components. Once implemented, this partitioning may not be changed easily or dynamically, rendering runtime optimization impossible.
Like labels are used to refer to same or similar items in the drawings.